// * 请求响应参数(不包含data)
export interface Result {
	code: number;
	msg: string;
}

// * 请求响应参数(包含data)
export interface ResultData<T = any> extends Result {
	body: T;
}

export interface ExportData {
	fileName: string;
	fileBytes: any;
}

// * 分页请求参数
export interface ReqPage {
	pageNum: number;
	pageSize: number;
}

// * 分页响应参数
export interface ResPage<T> {
	records: T[];
	pageNum: number;
	pageSize: number;
	total: number;
}

export namespace User {
	export interface LoginForm {
		clientId: string;
		userName: string;
		password: string;
	}
	export interface LoginRes {
		accessToken: string;
	}

	export interface LoginUser {
		userName: string;
		phoneNumber: string;
		avatar: string;
	}

	export interface SysUser {
		id: number;
		userName: string;
		realName: string;
		phoneNumber: string;
		emailAddress: string;
		avatar: string;
		isEnabled: number;
		lastLoginTime: string;
		lastLoginIpAddr: string;
	}

	export interface SysLoginLog {
		id: number;
		clientId: string;
		userId: number;
		loginIp: string;
		loginDesc: string;
		createBy: string;
	}
}

// * 菜单管理模块
export declare namespace Menu {
	interface SysRouteMetaVo {
		locale: string;
		requiresAuth: string;
		showBreadcrumb: string;
	}
	interface SysRouteVo {
		name: string;
		component: string;
		redirect: string;
		menuIcon: string;
		path: string;
		meta: SysRouteMetaVo;
		children: SysRouteVo[];
	}
}

export namespace Audit {
	export interface Course {
		id: number;
		target: string;
		auditName: string;
		auditResult: string;
		auditDesc: string;
	}

	export interface Teacher {
		id: number;
		teacherName: string;
		teacherIdCardNo: string;
		agreementStartTime: string;
		agreementEndTime: string;
		agreementSignTime: string;
		createBy: string;
		createTime: string;
		updateBy: string;
		updateTime: string;
	}

	export interface TeacherClass {
		id: number;
		teacherId: number;
		className: string;
		unitPrice: number;
		createBy: string;
		createTime: string;
		updateBy: string;
		updateTime: string;
	}
}
